package com.cskaoyan.javase.io._5print;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 字符打印流PrintWriter的自动刷新
 * 自动刷新缓冲区仅针对以下方法:
 *      println,format(格式化输出),printf方法
 * 尤其需要注意print方法不会自动刷新缓冲区,即便autoFlush参数为true
 *
 * PrintWriter的format成员方法
 * public PrintWriter format(String format,Object... args)
 * 使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。如果启用自动刷新，则调用此方法将刷新输出缓冲区。
 * 方法中的"format"字符串表示将以何种形式来将一个参数转换成对应格式的字符串
 * args就表示将要写入输出流的参数,可以是多个,Object作为形参数据类型,表示可以将任何Java数据类型写在这里
 * 然后此方法将会把该格式化字符串写入输出流(文件)
 *
 * String类的API,补充一个静态方法
 * String format(String format, Object... args)
 *
 * 在Java代码中格式化一个字符串,非常常用,尤其是保留小数点,转换日期格式
 *
 * @since 09:29
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo4 {
    public static void main(String[] args) throws IOException {
        // PrintWriter(Writer out,  boolean autoFlush)	创建新 PrintWriter。
        PrintWriter writer = new PrintWriter(new FileWriter("a.txt"), true);
        // writer.print("hello world!");
        // writer.print("你好,这个世界!");
        // writer.flush();
        // writer.close();
        // writer.println("hello world!");
        // 将一个字符串"hello"写入输出流
        writer.format("%s%n", "hello");
        writer.format("%s%n", "world");
        writer.format("%.2f%n", 0.12345);
    }
}
